import sqlite3
#绘图词云
from matplotlib import pyplot as plt    #绘图
from wordcloud import WordCloud         #词云
from PIL import Image                   #图片处理
import numpy as np                      #矩阵运算


from collections import Counter  #两个字典取并集，重点在于对相同key的value相加。

# 1 获取词语
data = ""
conn = sqlite3.connect(r"../news.db") #表示上一级目录下面的文件
cur = conn.cursor()
sql = "select keywords from newsInfo"
dat = cur.execute(sql)
for item in dat:
    if(item[0] != ""):
        data = ''.join([data, item[0]])
#datalist = data.split(" ")
data = data.strip(" ").split(" ")

#print(data)
cur.close()
conn.close()

'''
# 2 打开图片
img = Image.open(r"../static/assets/img/tree.jpg")
img_array = np.array(img) #将图片转换为数组
wc = WordCloud(
    background_color='white',
    mask=img_array,
    font_path='msyh.ttc' #在C盘windows的fonts
)
wc.generate_from_text(data)

#3 绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis('off') #不显示坐标轴
plt.show()
'''
##########################方法二#############################
'''
record.txt文件示例，第1列是单词，第2列是频率，空格分隔

中文 100
英文 2
日语 3
'''
frequencies = {} #字典
datalist = ['重要:8', '会议:10', '工作:12' , '会议:10','学校:14', '人才:14', '会议:10', '调研:5', '调研:5']
for data in datalist:
    arr = data.split(":")  # bug:最后一个为空
    frequency = {}  # 只存放一个，每次归零
    frequency[arr[0]] = int(arr[1])
    X, Y = Counter(frequency), Counter(frequencies)
    frequencies = dict(X+Y)
print(frequencies)


# 根据词频生成词云
def create_word_cloud(datalist):
    frequencies = {}
    for data in datalist:
        arr = data.split(":") #bug:最后一个为空['学校:9', '']
        frequencies[arr[0]] = float(arr[1])
    wc = WordCloud(

        font_path=r"../static/font/msyh.ttc", #字体路径
        max_words=100,
        width=2000, #图片宽度
        height=1200, #图片高度
    )
    word_cloud = wc.generate_from_frequencies(frequencies)
    ### dpi为图片的像素
    #plt.savefig('E:\\picture.jpg', dpi=500)
    # 写词云图片wordcloud.jpg
    word_cloud.to_file("wordcloud.jpg")
    # 显示词云文件
    plt.imshow(word_cloud)
    plt.axis("off")
    plt.show()

# 根据词频生成词云
#create_word_cloud(datalist)
